From: Keir Fraser Date: Wed, 18 Jun 2008 10:55:34 +0000 (+0100) Subject: ioemu: Fix usbdevice parameter to encode vbd type. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14192^2~48 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=8da380986914ae767973e584e006bf8945d424c0;p=xen.git ioemu: Fix usbdevice parameter to encode vbd type. usbdevice = "disk:" expect a raw device (as this probably is the most usual case) and usbdevice = "disk-qcow:" expect a COW image (autodetected, probably qcow2). Signed-off-by: Ian Jackson --- diff --git a/tools/ioemu/hw/usb-msd.c b/tools/ioemu/hw/usb-msd.c index 4530a1ceaa..6f22a57969 100644 --- a/tools/ioemu/hw/usb-msd.c +++ b/tools/ioemu/hw/usb-msd.c @@ -510,7 +510,7 @@ static void usb_msd_handle_destroy(USBDevice *dev) qemu_free(s); } -USBDevice *usb_msd_init(const char *filename) +USBDevice *usb_msd_init(const char *filename, BlockDriver *drv) { MSDState *s; BlockDriverState *bdrv; @@ -520,7 +520,7 @@ USBDevice *usb_msd_init(const char *filename) return NULL; bdrv = bdrv_new("usb"); - if (bdrv_open(bdrv, filename, 0) < 0) + if (bdrv_open2(bdrv, filename, 0, drv) < 0) goto fail; s->bs = bdrv; diff --git a/tools/ioemu/hw/usb.h b/tools/ioemu/hw/usb.h index 48967516ec..f866e5fa80 100644 --- a/tools/ioemu/hw/usb.h +++ b/tools/ioemu/hw/usb.h @@ -217,7 +217,7 @@ USBDevice *usb_mouse_init(void); USBDevice *usb_tablet_init(void); /* usb-msd.c */ -USBDevice *usb_msd_init(const char *filename); +USBDevice *usb_msd_init(const char *filename, BlockDriver *drv); /* usb.c */ void generic_usb_save(QEMUFile* f, void *opaque); diff --git a/tools/ioemu/vl.c b/tools/ioemu/vl.c index c0d4537306..9c4c54d8f1 100644 --- a/tools/ioemu/vl.c +++ b/tools/ioemu/vl.c @@ -4265,7 +4265,9 @@ static int usb_device_add(const char *devname) } else if (!strcmp(devname, "tablet")) { dev = usb_tablet_init(); } else if (strstart(devname, "disk:", &p)) { - dev = usb_msd_init(p); + dev = usb_msd_init(p, &bdrv_raw); + } else if (strstart(devname, "disk-qcow:", &p)) { + dev = usb_msd_init(p, 0); } else { return -1; }